package test3_17.Animal;
/*
 3.利用多态性
   	定义一个Animal类型的变量a，并将不同子类的实例赋给a；
   	调用eat();观察结果后，并理解多态
 */
public class Homework9_7_Test {
    public static void main(String[] args) {
        Animal a = new Animal();
        Cat cat = new Cat();
        Dog dog = new Dog();
        Eagle eagle = new Eagle();
        a = cat;
        a.eat();
        a = dog;
        a.eat();
        a = eagle;
        a.eat();

        //思考，如果a的引用指向一个Cat,如何调用Cat的新增方法
        Invoke(cat);
        Invoke(dog);
        Invoke(eagle);
    }

    public static void Invoke(Animal animal){
        if(animal instanceof Cat){
            Cat cat = new Cat();
            cat.catchFish();
        }else if(animal instanceof Dog){
            Dog dog = new Dog();
            dog.catchMeat();
        }else if(animal instanceof Eagle){
            Eagle eagle = new Eagle();
            eagle.catchMouse();
        }
    }
}
